비트코인(Bitcoin)

2008년 11월 1일 사토시 나카모토(Satoshi Nakamoto)라는 가명의 인물이 사이퍼 펑크(Cypherpunk) 암호학 메일링 리스트를 통해 "비트코인: P2P 전자화폐 시스템 (Bitcoin: A Peer-to-Peer Electronic Cash System)"이라는 제목의 백서를 공개하였다. 이후 메일링 리스트에 포함되어 있던 다른 사람들과 지속적으로 의견을 교류하고 이 2009년 1월 9일 비트코인 버전 0.1을 출시하였다.

1. 비트코인이란 무엇인가?

비트코인은 중앙발행기관 없이 네트워크 참가자간 P2P(peer-to-peer) 방식으로 발행되는 전자화폐이다. 중앙은행이 화폐의 발행에 대한 권한을 독점하고 화폐를 찍어내는 현 화폐 시스템과 달리 비트코인은 분산화된(decentralized) 네트워크에 의해 화폐의 발행과 유통이 이루어지기 때문에 그 어떤 중앙기관 및 개인도 비트코인의 발행과 유통을 통제하거나 거래를 검열할 수 없다. 발행량이 한정되어 있기 때문에 디플레이션 화폐(deflationary currency)라 불리기도 하며 2140년까지 총 2,100만 비트코인(BTC)이 단계적으로 발행될 예정이다.

네트워크의 각 참가자는 비트코인으로 이루어지는 모든 거래의 내역이 기록된 분산 장부(distributed ledger)를 지니고 있는데 이를 블록체인(blockchain)이라 한다. 블록체인 상에 기록된 모든 거래 내역은 누구나 투명하게(transparent) 열람할 수 있는 동시에 한 번 기록되면 그 내용을 변경하는 것이 불가능(immutable)하기 때문에 누구나 블록체인을 통해 신뢰하지 않는(trust-less) 상대방과의 안전하고 효율적인 가치의 교환이 가능하다. 인터넷 상에서 네트워크를 통해 정보(information)가 빠르고 효율적으로 이동하는 것처럼 비트코인 네트워크 상에서 가치(value)가 자유롭게 이동할 수 있기 때문에 비트코인을 가치의 인터넷(Internet of Value)이라 부르기도 한다.

2. 비트코인의 특성

비트코인은 다음과 같은 특성을 갖는다.

2.1. 분산화(Decentralization)

  • 화폐발행의 분산화: 비트코인은 채굴(mining)이라는 일종의 수학 문제를 해결하는 연산작업을 통해 화폐가 발행된다. 누구나 연산능력만 있다면 이를 사용하여 비트코인을 채굴함으로써 화폐의 발행에 참여할 수 있으며 자신의 연산력 기여도에 비례하여 발행되는 비트코인의 일부분을 보상으로 받는다. 기존의 중앙은행이 독점하고 있던 화폐의 발행권환이 네트워크 상에서 연산력을 기여하는 모든 참가자들에게 분배되는 것이다. 이러한 화폐발행의 분산화를 통해 비트코인의 발행량은 그 어떤 중앙 기관도 통제할 수 없다.
  • 의사결정의 분산화: 비트코인과 관련한 중요한 의사결정은 분산화된 합의(distributed consensus)를 통해 일어난다. 기존의 중앙은행은 경제상황에 따라 화폐의 발행량 및 발행 스케줄을 조절하거나 목표 이자율을 설정하는 등 다양한 방식으로 화폐에 대한 정책을 설정하여왔으며 이러한 권한은 중앙은행에 의해 독점되었다. 하지만 비트코인의 경우 네트워크와 관련된 중요한 의사결정이 네트워크 참가자들의 합의에 의해 일어나게 된다. 따라서 그 어떠한 중앙기관도 독자적으로 정책을 설정하고 이를 강요할 수 없으며 모든 정책은 대다수의 참가자들이 동의를 하는 경우에만 실현될 수 있다.
  • 거래장부 관리의 분산화: 비트코인에 참가하고 있는 수천명의 노드(node)들은 블록체인이라 불리는 동일한 분산장부를 각각 보관하고 있으며 동일한 방식으로 장부를 기록해나간다. 모든 이가 동일한 데이터베이스를 보유하고 있으므로 개별 컴퓨터들이 해킹당하거나 데이터가 위변조된다고 하더라도 비트코인의 P2P 네트워크는 문제없이 작동하고 데이터의 무결성에 합의할 수 있다. 따라서 비트코인과 같은 분산 데이터베이스는 기존의 중앙 데이터베이스가 가지고 있던 상호운용성의 부족, 데이터 위변조, 사생활 침해, 복잡한 구조와 높은 보안유지비용으로 인한 비효율성, 중앙기관에 의한 부정 및 부패 등의 많은 문제를 해결할 수 있다. 이와 더불어 비트코인은 분산화된 방식으로 데이터가 기록되고 인정되기 때문에 검열 저항적(censorship-resistant)인 성격을 지니는데 그 어떤 권력기관도 특정 비트코인이 인정되고 거래되는 것을 막을 수 없기 때문이다

2.2. 비가역성(Immutability)

비트코인이 등장하기 이전 분산화 시스템의 가장 큰 도전과제는 악의적으로 데이터를 위변조하거나 네트워크에 대한 공격(e.g. 서비스거부(DoS) 공격시빌공격(Sybil Attack) 등)을 시행하는 경우 데이터의 유효성과 무결성에 대해 어떻게 합의에 도달할 수 있을지에 대한 문제였다. 비트코인이 혁신적이라 여겨지는 가장 큰 이유는 1. 블록체인이라는 새로운 데이터베이스의 구조와 2. 컴퓨터 연산에 기반한 작업증명(PoW: proof-of-work)을 바탕으로 신뢰하지 않는(trust-less) 참가자들간 경제학적 유인(economic incentive)에 의해 누구나 합의할 수 있는 방식으로 데이터베이스를 업데이트해나갈 수 있는 합의 알고리즘을 조합하여 신뢰가 없는(trust-less) 공개된(public) 환경에서 데이터의 비가역성(immutability)을 보장하는 분산 시스템을 최초로 개발하고 구현하였기 때문이다.

비가역성이란 블록체인에 한 번 기록된 정보는 그 누구도 수정하거나 위변조할 수 없다는 뜻으로 누구나 블록체인에 기록된 내용을 바탕으로 특정 거래내역에 객관적으로 합의할 수 있도록 한다. 비트코인의 경우 비트코인의 탄생(genesis)으로부터의 모든 화폐의 발행 및 유통 내역 모두가 블록체인에 비가역적인 방식으로 기록되어 있다.

2.3. 비허가성(Permission-less-ness)

비트코인은 누구나 비트코인 네트워크에 참가하여 아무런 허가 없이 1. 비트코인을 채굴함으로써 화폐를 발행하거나 거래를 처리하고 2. 비트코인으로 이루어지는 거래를 검증하거나 3. 비트코인 계좌를 만들고 다른 참가자와 자유롭게 거래 할 수 있는 비허가성(permission-less) 시스템이다.

비트코인 기존 금융 시스템
화폐발행의 비허가성 누구나 연산능력만 있으면 채굴을 통해 화폐의 발행에 참여 가능 중앙은행이 화폐발행 권한 독점
거래검증의 비허가성 누구나 블록체인에 기록된 거래 데이터를 열람하고 해당 거래의 유효성을 검증 가능 해당 거래와 관련한 계좌를 발급한 은행들에의해 거래의 유효성이 검증
거래처리의 비허가성 누구나 연산능력만 있으면 블록을 채굴하여 거래를 처리할 수 있음 해당 거래와 관련한 은행들에 의해 거래가 기록되고 인정됨
계좌 및 거래생성의 비허가성 누구나 쉽게 비트코인 계좌를 만들고 금융거래 가능 자신의 신원 및 개인정보를 증명하는 복잡한 절차를 거쳐 계좌를 생성한 후에야 금융거래 가능

2.4. 투명성(Transparency) 및 가명성(Pseudonymity)

비트코인으로 이루어지는 모든 거래는 거래 당사자들의 주소값(address)을 바탕으로 이루어진다. 이는 우리가 인터넷에 접속할때 IP 주소를 할당받는 것과 비슷하다. 인터넷 상에서 우리들은 각각의 IP주소로서 표현되는 것처럼 비트코인 네트워크에서 각 참가자들은 그들의 주소값으로 표현된다. 비트코인의 사용자들은 자신의 비트코인 주소값을 가명(pseudonym)으로 하여 비트코인 네트워크에서 거래를 하게되는 것이다. 따라서 특정 주소가 나의 것임을 밝히지 않는 이상 내가 어떠한 거래를 실시했는지 다른 사람들이 알 수 없다.

하지만 이와 동시에 비트코인은 모든 거래가 블록체인에 공개적으로 기록되어 누구나 열람할 수 있는 투명성(transparency)을 지니고 있다. 따라서 나의 주소값이 공개되면 내가 실시했던 모든 거래 내역이 100% 공개된다. 따라서 이러한 투명성으로 인해 비트코인에서는 사생활(privacy) 문제가 붉어지고 있는데 다양한 분석을 통해 특정 주소값과 나의 신원을 연결시키는 것이 어느정도 가능하기 때문이다.

3. 비트코인의 구조

비트코인은 크게 다음의 다섯 가지 요소로 구성되어 있다.

  • 블록체인(blockchain) 구조의 데이터베이스
  • 데이터베이스에 누가 어떻게 데이터를 추가시킬 것인지를 결정하는 합의 알고리즘(consensus algorithm)
  • 블록체인 상에 기록되는 거래 및 계약의 조건을 명시할 수 있는 스크립트 언어(script language)
  • 비트코인(bitcoin)이라 불리는 토큰(token)
  • 비트코인 클라이언트(client) 소프트웨어를 운영하는 노드(node)로 구성된 P2P(peer-to-peer) 네트워크

3.1. 블록체인(blockchain)이란?

블록체인은 블록들이 체인 구조로 연결되어 있는 데이터베이스이다. 비트코인 블록체인에는 매 10분마다 새로운 블록이 추가되며 각 블록은 비트코인으로 이루어진 거래내역 데이터를 담고 있다. 블록체인은 전 세계에서 비트코인으로 이루어지는 거래의 내역이 모두 기록되는 장부(ledger)로서 각각의 블록이 그 이전 블록의 아이디값(i.e. 이전 블록의 블록헤더의 해시값)을 포함하는 방식으로 일렬로 연결되어져 있다. 특정 블록의 내용이 수정되면 해당 블록의 아이디값도 바뀌게 되는데 만약 블록체인 중간에 있는 블록의 내용을 수정하면 해당 블록 이후에 생성된 모든 블록의 내용 또한 수정되어야 한다. 비트코인은 작업증명(PoW)이라 불리는 합의 알고리즘을 사용하기 때문에 블록의 내용을 수정하기 위해서는 많은 양의 연산이 필요하다. 따라서 위의 경우에서처럼 해당 블록 이후에 생성된 모든 블록의 내용을 수정하기 위해서는 비트코인 네트워크 전체 연산량의 51% 이상의 엄청난 양의 연산량이 필요하다. 이러한 연산량을 보유하는 것이 거의 불가능하며 가능하다고 하더라도 블록체인에 기록된 내용을 뒤집는 악의적인 행동을 하는 경우 상당한 경제적 손해를 입을 수 있기 때문에 비트코인 블록체인에 한 번 기록된 내용은 수정이 거의 불가능하고 되돌릴 수가 없다.

3.2. 합의 알고리즘(consensus algorithm)이란?

블록체인은 비허가성(permission-less) 분산화(decentralized) 장부로서 기존의 단일 중앙 데이터베이스에서는 발생하지 않는 문제들이 중요하게 대두된다. 기존의 단일 중앙 데이터베이스의 경우에는 은행과 같은 신뢰받는 제 3자(TTP: Trusted Third Party)가 데이터베이스에 대한 독점적 수정권한을 바탕으로 거래내역을 기록하고 수정하는 반면 비트코인은 이러한 중개인(intermediary) 없이 서로 신뢰하지 않는 다수의 참가자들이 모두 동의할 수 있는 방식으로 거래내역을 기록해야 하는 과제를 안고 있다. 따라서 거래내역의 유효성(validity)에 대해 누구나 객관적으로 검증(verify)하고 이를 통해 단일의 거래내역에 합의(consensus) 할 수 있는 방식과 절차가 필요한데 이를 합의 메커니즘(consensus mechanism)이라 한다.

비트코인은 작업증명(PoW: Proof of Work)을 기반으로 한 합의 메커니즘을 사용한다. 작업증명이란 해시(hash)함수라 불리는 일종의 수학 연산작업의 양에 비례하여 블록을 추가시킬 수 있는 권한을 부여하기로 합의하는 방식이다. 비트코인은 비허가성 네트워크이기 때문에 누구나 거래내역을 조합하여 블록을 생성할 수 있다. 이 때 네트워크 참가자들은 어떠한 블록체인이 옳은(canonical) 것인지 판단을 해야 하는데 이 판단 기준이 바로 합의 알고리즘의 핵심이다. 비트코인의 경우 "가장 긴 블록체인(longest blockchain)"을 옳은(canonical) 것으로 여기기로 합의하는데 이는 블록체인의 길이는 해당 블록체인을 생성하기 위해 투입한 연산량과 비례하기 때문이다. 어떠한 블록체인이 옳은 것인지에 대한 합의가 이루어지면 이후 네트워크 참가자들은 해당 블록체인에 새로운 거래들을 블록의 형식으로 연결시켜 나가게 된다.

3.3. 스크립트 언어(script language)란?

비트코인 블록체인 상에는 "A가 B에게 3BTC을 보낸다"라고 하는 거래의 조건이 명시되어 있는데 이러한 내용을 작성하는데 사용되는 프로그래밍 언어가 비트코인의 스크립트 언어(script language)이다. 기본적으로 비트코인 상의 거래는 비트코인의 소유권에 대한 내용만을 표현하면 충분하기 때문에 단순한 데이터의 입출력, 조건문, 암호학적 연산(e.g. 전자서명 및 해시 등) 등의 작업을 할 수 있는 옵코드(opcode)를 사용한 스택기반의 스크립트 언어를 사용한다. 비트코인이 발전함에 따라 스크립트 언어를 사용하여 좀 더 복잡한 조건을 명시할 수 있게 되었는데 그 중 하나가 다중 서명(multi-signature) 거래이다. 다중 서명 거래는 예를 들어 "A, B, C 중 두 명의 전자서명이 있을 경우 D에게 3BTC을 보낸다"와 같이 n명의 사람들 중 m명의 동의가 있는 경우에만 거래가 성사되는 조건을 구현할 수 있다. 아래는 "A, B, C 중 두 명의 전자서명이 있는 경우"를 나타내느 스크립트 코드이다. 아래 스크립트의 입력값에 A, B, C 중 두 명의 전자서명을 입력하면 마지막에 위치한 CHECKMULTISIG 옵코드에 의해 이들 서명 중 두 개가 앞에 나열된 공개키(public key)와 매칭되는지 살피고 매칭되는 경우 TRUE 값을 그렇지 않은 경우 FALSE 값을 출력한다.

2 <A's Public Key> <B's Public Key> <C's Public Key> 3 CHECKMULTISIG

3.4. 토큰으로서의 비트코인(BTC)이란?

비트코인은 블록체인과 네트워크 등으로 이루어져있는 총체적인 비트코인 시스템을 지칭하기도 하지만 이와 동시에 비트코인 상에서 사용되는 화폐 혹은 토큰(token)으로서의 비트코인(BTC)을 지칭하기도 한다. 화폐 혹은 토큰으로서의 비트코인은 통상적인 화폐의 세 가지 기능 - 가치의 저장(store of value), 가치의 척도(measure of value), 가치의 교환(medium of exchange) - 을 수행하는 동시에 비트코인 시스템 상에서 특정 거래를 블록체인에 추가시키기 위해 발생하는 거래 수수료(transaction fee)를 지불하는 데에 사용된다. 이 때 지불되는 거래 수수료는 블록을 채굴하는 채굴자들에게 보상의 형식으로 지급된다.

alt text

비트코인은 발행량이 총 2,100만 비트코인(BTC)으로 정해져 있으며 2140년까지 발행량이 매 4년마다 반감되는 구조이다 (현재에는 매 10분마다 12.5비트코인이 발행). 2017년 8월 3일까지 약 1,650만 비트코인이 발행되었으며 이는 총 발행 예정량의 78.5%를 차지한다. 비트코인은 발행량이 정해져 있기 때문에 가치의 저장수단인 금(gold)과 종종 비교되곤 한다. 실제로 2017년 3월 3일 1비트코인의 가격이 금 1온스(ounce)의 가격을 넘어섰으며 2017년 8월에는 1비트코인 가격이 금 1온스 가격의 3배 가까이 되어 화제가 되기도 했다.

3.5. 비트코인 네트워크란?

비트코인 네트워크란 비트코인 프로토콜(protocol)을 따르는 참가자들간의 P2P 분산 네트워크이다. 각 참가자들 노드(node)라 불리며 비트코인 네트워크 상에서 거래와 블록을 검증(verify) 및 전파(propagate)하고 이를 통해 유일한 분산장부의 상태에 대한 합의에 도달하는 역할을 수행한다. 비트코인은 비허가성(permission-less) 네트워크로서 누구나 원하면 비트코인의 노드가 될 수 있으며 이러한 합의 과정에 참여할 수 있다.

results matching ""

    No results matching ""